<!--
 * @Descripttion: 
 * @Version: 
 * @Author: gaohj
 * @Date: 2022-12-30 09:56:59
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2022-12-30 10:58:01
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var obj = {}; //创建一个空对象 
        
        console.log('原始对象',obj);
        
        //增 
        obj.name = '张三';
        obj.age = 18;
        obj.gender = 'male';
        console.log('增加之后',obj);

        // 删 
        delete obj.age;
        console.log('删除之后',obj);

        // 改 
        obj.name = '爱烫头杨璐';
        console.log('修改之后',obj);

        // 查 

        console.log(obj.name);
        console.log(obj.gender);
        console.log(obj.age); // undefined   已经被删除  所以undefined 


        // 数组的方式实现增删改查 


        // var obj1 = {};
        // console.log('原始对象',obj1);


        // // 增 

        // obj1['name'] = '张三';
        // obj1['age'] = 18;
        // obj1['gender'] = '男';
        
        // console.log('增加以后',obj1);


        // // 删除 

        // delete obj1['age'];
        // console.log('删除以后',obj1);

        // // 改 

        // obj1['name'] = '全能坤坤';
        // console.log('修改以后',obj1);

        // // 查 
        // console.log(obj1['name']);
        // console.log(obj1['gender']);

        // console.log(obj1['age']); // undefined 

        


        // 区别:

        /// 当键的名字 满足标识符的命名规则和规范 它俩没有区别 

        // 当键的名字是纯数字 或者里边有特殊字符,只是使用数组的语法方式
        // 进行增删改查 

        // 里边涉及到变量  把键的名字赋值给 变量 
        // 然后对象通过变量 拿到 指定的值 
        //  只能使用数组的语法方式  中括号内也不要加单引号


        var obj2 = {
            name:'张三',
            age:18,
            gender:'男',
            1:100,
            2:200,
            'aa@bb':'cc',
            'dd&ee':'ff',
            kangbazi:999 
        }
        // console.log('原始对象',obj2);

        // console.log(obj2.name);
        // console.log(obj2['name']);

        // console.log(obj2.1); // 报错
        // console.log(obj2['1']);
        // // console.log(obj2.2); // 报错
        // console.log(obj2['2']);

        var test = 'kangbazi';  // 把键的名字放到 变量中 

        console.log(obj2.test); // 不支持这个 写法 所以undefined
        // 我就想用 对象名和变量名拿到对应的值
        // 只能采用  对象名[变量名] // 不要加单引号 
        console.log(obj2['test']); // undefined 
        console.log(obj2[test]); // 999   这个可以拿到值  




    </script>
</body>
</html>